Binary digital data is typically recorded on mass storage media as a pattern of transitions in a storage medium. For example, data on magnetic storage media is represented by changes of magnetic polarity, and data on optical storage media is represented by changes in reflectivity or transmissivity. The transition patterns correspond to digital data which has been encoded to facilitate recording. When a magnetic memory is read using an inductive read head, or an optical memory is read using an optical scanner, an analog signal is generated with relative positive and negative peaks or large and small signals corresponding to the transition pattern. The analog signal, which may be distorted by system noise and other influences, is then demodulated to extract the original transition pattern as faithfully as possible and interpret it as a series of binary encoded bits. The binary encoded bits must then be decoded to reproduce the original digital data.
Signal demodulation may become increasingly difficult as the density of data recorded on the disks is increased. With higher recording densities, the medium, or disk, space allotted for the recording of a transition signal, that is, a transition cell, is, in effect, reduced. The signals read from the transition cells tend to be smaller relative to the background noise as a result and they can be more readily misinterpreted.
The signals may be misinterpreted because of system noise, which can distort the signals read from the "small" transition cells, or because of interference from surrounding transition cells, which can cause signal peaks to shift either within a transition cell or even to adjacent transition cells. The misinterpretation of the transition signals results in errors in the binary encoded bits which, after decoding, results in errors in the digital data.
The need to encode data specifically to facilitate demodulation and minimize the effects of peak shifts, etc., is well known. One such encoding scheme is shown in U.S. Pat. No. 4,146,909 to Beckenhaur et al., assigned to International Business Machines, Inc. (IBM). Data which may already be encoded for error correction is further encoded using a demodulation code, for example, the IBM code, before it is recorded on the storage medium. Thus the data is recorded in the form of a series of transitions corresponding to the demodulation code words.
When a user requests data from storage the demodulation code words corresponding to the data are retrieved; that is, an analog signal is produced from the stored transition pattern. The analog signal corresponding to the code words must then be demodulated. Demodulation of the code word signal requires first determining the binary values corresponding to the signal transitions, and thus, the bit values, and next, finding the beginnings of the code words and decoding them. The resulting data may then be further decoded, for example, for error correction, to reproduce the actual data.
In order to facilitate demodulation the data is encoded such that the effects of signal transitions on nearby transition cells, for example, peak shifts, in the data signal are minimized. The data is typically encoded using a code which separates consecutive binary ONES, which correspond to transition cells containing signal transitions or peaks, by a minimum of one or more binary ZEROS, which correspond to transition cells without signal transitions.
To further facilitate the determination of the bit values associated with the recorded signal, the data is encoded such that the data signal, which typically includes clock information which enables the demodulator to find and synchronize to the signal transition cells, has a limited number of consecutive binary ZEROS. A ZERO is represented by a transitionless cell, and thus, too many consecutive ZEROS may result in the demodulator losing clocking information. Codes having these limitations for both ONES and ZEROS are commonly referred to as "run-length-limited" codes.
The IBM code discussed above is a run-length-limited code which separates consecutive ONES in a code word by at least two ZEROS. The parameter d is commonly associated with this minimum number of ZEROS, and thus, d=2. The IBM code allows at most seven consecutive ZEROS. The parameter k is commonly associated with the maximum number of ZEROS, and thus, k=7. Codes for which d and k are both small numbers and relatively close to each other are best suited for demodulation encoding.
The IBM code using these d and k parameters encodes groups of two, three and four data bits into any of seven code words. The number of valid code words in a code determines the complexity of the corresponding encoder and demodulator. Thus codes which contain fewer code words may use less complex encoders and demodulators.